package br.com.rampage.model.bean;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "unidade_saude")
public class UnidadeSaude {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "cod")
	private Integer codUnidadeSaude;

	private String nome;
	private String senha;

	@Embedded
	private Endereco endereco;

	@ManyToMany(mappedBy = "unidades")
	@Cascade(CascadeType.ALL)
	@Fetch(FetchMode.SUBSELECT)
	private Set<Vacina> vacinas;

	@OneToMany(mappedBy = "unidade",fetch=FetchType.EAGER)
	private Set<Aplicacao> aplicacoes;

	public UnidadeSaude() {
		vacinas = new HashSet<Vacina>();
		aplicacoes = new HashSet<Aplicacao>();
	}
	
	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Set<Vacina> getVacinas() {
		return vacinas;
	}

	public void setVacinas(Set<Vacina> vacinas) {
		this.vacinas = vacinas;
	}

	public Set<Aplicacao> getAplicacoes() {
		return aplicacoes;
	}

	public void setAplicacoes(Set<Aplicacao> aplicacoes) {
		this.aplicacoes = aplicacoes;
	}

	public Integer getCodUnidadeSaude() {
		return codUnidadeSaude;
	}

	public void setCodUnidadeSaude(Integer codUnidadeSaude) {
		this.codUnidadeSaude = codUnidadeSaude;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

}
